#ifndef WINCC_H
#define WINCC_H

#include <QWidget>
#include <QList>
#include <QTimer>
#include <QSerialPort>
#include <QSerialPortInfo>

namespace Ui {
class wincc;
}

class wincc : public QWidget
{
    Q_OBJECT

public:
    explicit wincc(QWidget *parent = 0);
    ~wincc();

    // 初始化

    void Init_WinCC();

public slots:

    // 获取电脑所有串口
    void slot_getSerialPortID();

    // 读串口数据
    void slot_Readserialport();

    // 定时发送
    void slot_Timersending();

private slots:

    // 黑白切换 按钮
    void on_c_black_on_white_stateChanged(int arg1);

    // 打开端口 按钮
    void on_pb_open_port_clicked();

    //
    void on_cb_data_bit_currentIndexChanged(const QString &arg1);

    //
    void on_cb_stop_bit_currentIndexChanged(const QString &arg1);

    //
    void on_cb_baud_rate_currentIndexChanged(const QString &arg1);

    //
    void on_pb_sending_clicked();

    //
    void on_pb_clear_sending_clicked();

    //
    void on_le_period_editingFinished();

    //
    void on_pb_clear_receive_clicked();

    //
    void on_c_timing_sending_stateChanged(int arg1);

    //
    void on_cb_parity_check_currentIndexChanged(const QString &arg1);

    //
    void on_pb_save_window_clicked();

protected:

    //打开串口
    void OpenSerialport();

    //关闭串口
    void CloseSerialport();

private:
    Ui::wincc *ui;

    QSerialPort* Setserial;     // 用于 配置本机串口
    QStringList* AllserialList; // 记录 所有的串口名
    int serial_count;           // 记录 每次读取的串口数，如果下次改变了，就更新UI中串口的列表
    QByteArray* sendingText;    // 要向串口发送的文本
    QTimer* timer_1;            // 定时器 - 用于定期更新串口数
    QTimer* timer_2;            // 定时器 - 用于定时发送消息



};

#endif // WINCC_H
